typedef int ElementType;

#ifndef _PairHeap_H
#define _PairHeap_H

struct PairNode;
typedef struct PairNode *PairHeap;
typedef struct PairNode *Position;

PairHeap Initialize(void);
void Destroy(PairHeap H);
PairHeap MakeEmpty(PairHeap H);
PairHeap Insert(ElementType Item, PairHeap H, Position *Loc);
PairHeap DeleteMin(ElementType *MinItem, PairHeap H);
ElementType FindMin(PairHeap H);
PairHeap DecreaseKey(Position P, ElementType NewVal, PairHeap H);
int IsEmpty(PairHeap H);
int IsFull(PairHeap H);
#endif
